package com.open.capacity.user.service;

import com.open.capacity.common.model.Group;
import com.open.capacity.common.model.SysUser;
import com.open.capacity.common.web.PageResult;
import com.open.capacity.common.web.Result;

import java.util.List;
import java.util.Map;

public interface GroupService {
    /**
     * 查看教师创建的小组
     * @param params 条件集合
     * @return
     */
    PageResult<Group> selectGroupByTeacher(Map<String,Object> params);

    /**
     * 添加小组
     * @param group 小组实体
     * @return
     */
    Result addGroup(Group group);

    /**
     * 逻辑删除小组
     * @param id    小组id
     * @return
     */
    Result deleteGroupById(int id);

    /**
     * 修改小组状态
     * @param params
     * @return
     */
    Result updateGroupType(Map<String, Object> params);

    /**
     * 获取小组成员及为分配小组学员
     * @param id
     * @return
     */
    Result getCheckGroupMember(int id);

    /**
     * 小组添加成员
     * @param param
     * @return
     */
    Result addGroupMember(Map param);

    /**
     * 移除小组成员
     * @param param
     * @return
     */
    Result removeGroupMember(Map param);

    /**
     * 修改小组信息
     * @param group
     * @return
     */
    Result updateGroup(Group group);

    /**
     * 查询学员所在小组信息
     * @param id    学员id
     * @return
     */
    Result selectGroupByMember(Long id);

    /**
     * 查询小组成员
     * @param id    小组id
     * @return
     */
    PageResult selectUserByGroup(Map<String,Object> params);

    /**
     * 根据班主任ID查询
     * @param params
     * @return
     */
    Result getGroup(Map<String, Object> params);

    /**
     * 根据班主任到额id获取所有学员
     * @param teachid
     * @return
     */
    List<SysUser> getGroupUserByTeacher(Long teachid);
}
